﻿Imports System.Data.OleDb
Module querysRankingVtaPosventa
    Public Class VtaPosvta_querys
        'Devuelve el ranking de asesores EN VENTAS de una empresa entre 2 fechas NO CONTEMPLA EN EL RANKING
        'LAS LLAMADAS CLASIFICADAS COMO "NO AUDITABLES"
        '----------------------------------------------------------------
        Public Function QxAsesorRankingVta() As OleDbDataReader
            'variables
            Dim drQrankingPV As OleDbDataReader

            'parametrizo las fechas de inicio y fin del informe
            Dim fechaInicio As New OleDbParameter("@fechIni", SqlDbType.Date)
            fechaInicio.Value = frmInfoRankingVtaPosvta.dtpInicio.Value
            Dim fechaFin As New OleDbParameter("@fechFin", SqlDbType.Date)
            fechaFin.Value = frmInfoRankingVtaPosvta.dtpfin.Value
            'parametro del tipo de llamada
            Dim tllamada As New OleDbParameter("@tllamada", SqlDbType.Text)
            tllamada.Value = "NO AUDITABLE"
            'parametro Empresa
            Dim bucarEmpresaxId As New OleDbCommand("Select id_empr from empresa where nomb_empr = '" & frmInfoRankingVtaPosvta.cbo_empresa.Text & "'", cadenaConexBD)
            Dim idEmpresa = bucarEmpresaxId.ExecuteScalar()
            cadenaConexBD()
            Dim instruccion As New OleDbCommand("SELECT auditado.noap_ado, AVG(llamada_vta.vato_llam) FROM ((llamada_vta INNER JOIN auditado ON ((llamada_vta.id_ado = auditado.id_ado))) INNER JOIN tipo_llamada ON ((llamada_vta.id_tllam = tipo_llamada.id_tllam))) WHERE ((llamada_vta.id_empr = " & idEmpresa & ") AND (llamada_vta.fau_llam BETWEEN @fechIni AND @fechFin) AND (tipo_llamada.desc_tllam <> @tllamada)) GROUP BY auditado.noap_ado ORDER BY AVG(llamada_vta.vato_llam) DESC", cadenaConexBD)
            'agrego y paso valores de los parametros
            instruccion.Parameters.Add(fechaInicio)
            instruccion.Parameters.Add(fechaFin)
            instruccion.Parameters.Add(tllamada)

            drQrankingPV = instruccion.ExecuteReader()
            Return drQrankingPV
            cadenaConexBD.Close()
            
        End Function

        Public Function QxAsesorRankingPOSVta() As OleDbDataReader
            'variables
            Dim drQrankingPV As OleDbDataReader

            'parametrizo las fechas de inicio y fin del informe
            Dim fechaInicio As New OleDbParameter("@fechIni", SqlDbType.Date)
            fechaInicio.Value = frmInfoRankingVtaPosvta.dtpInicio.Value
            Dim fechaFin As New OleDbParameter("@fechFin", SqlDbType.Date)
            fechaFin.Value = frmInfoRankingVtaPosvta.dtpfin.Value
            'parametro del tipo de llamada
            Dim tllamada As New OleDbParameter("@tllamada", SqlDbType.Text)
            tllamada.Value = "NO AUDITABLE"
            'parametro Empresa
            Dim bucarEmpresaxId As New OleDbCommand("Select id_empr from empresa where nomb_empr = '" & frmInfoRankingVtaPosvta.cbo_empresa.Text & "'", cadenaConexBD)
            Dim idEmpresa = bucarEmpresaxId.ExecuteScalar()
            cadenaConexBD()
            Dim instruccion As New OleDbCommand("SELECT auditado.noap_ado, AVG(llamada_pvta.vato_llam) FROM ((llamada_pvta INNER JOIN auditado ON ((llamada_pvta.id_ado = auditado.id_ado))) INNER JOIN tipo_llamada ON ((llamada_pvta.id_tllam = tipo_llamada.id_tllam))) WHERE ((llamada_pvta.id_empr = " & idEmpresa & ") AND (llamada_pvta.fau_llam BETWEEN @fechIni AND @fechFin) AND (tipo_llamada.desc_tllam <> @tllamada)) GROUP BY auditado.noap_ado ORDER BY AVG(llamada_pvta.vato_llam) DESC", cadenaConexBD)
            'agrego y paso valores de los parametros
            instruccion.Parameters.Add(fechaInicio)
            instruccion.Parameters.Add(fechaFin)
            instruccion.Parameters.Add(tllamada)

            drQrankingPV = instruccion.ExecuteReader()
            Return drQrankingPV
            cadenaConexBD.Close()
        End Function

        'ingresar datos a la tambla temporal para generar el informe DE RANKING EN AUDITORIA DE VENTA/POSVENTA
        '------------------------------------------------------------------------------------------------
        Public Sub insertarTemporalRankingVtaPosvta(ByVal v01 As String, ByVal v02 As Double)
            Try
                cadenaConexBD()
                Using cadenaConexBD()
                    'inserccion de datos a la tabla
                    Dim instruccion As New OleDbCommand("Insert into temporal_rankingvtaposvta (noap_ado, promedio_ado) values ('" & v01 & "','" & v02 & "')", cadenaConexBD)
                    instruccion.ExecuteNonQuery()
                End Using
                cadenaConexBD.Close()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub

        'vaciar la tabla temporal_ranking cuando se generen nuevos informes de Ranking AUDITORIA - ATENCION
        Public Sub eliminarTemporalesRankingVtaPosvta()
            Try
                cadenaConexBD()
                Using cadenaConexBD()
                    Dim instruccion As New OleDbCommand("delete * from temporal_rankingvtaposvta ", cadenaConexBD)
                    instruccion.ExecuteNonQuery()
                    cadenaConexBD.Close()
                End Using
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    End Class
End Module
